<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>HTTP请求</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../lib/layui-v2.5.5/css/layui.css" media="all">
    <link rel="stylesheet" href="../css/public.css" media="all">
    <style>
        .layui-form-item .layui-input-company {width: auto;padding-right: 10px;line-height: 38px;}
    </style>
</head>
<body>
<div class="layuimini-container">
    <div class="layuimini-main">
        <div class="layui-form layuimini-form">
            <div class="layui-form-item">
                <label class="layui-form-label">请求链接</label>
                <div class="layui-input-inline">
                    <select name="req_type" lay-filter ="req">
                        <option value="post" selected="">POST</option>
                        <option value="get" >GET</option>
                        <option value="put">PUT</option>
                        <option value="delete">DELETE</option>
                    </select>
                </div>
                <div class="layui-input-inline">
                    <input id="url" style="width: 500px;" type="text" name="url" placeholder="请求地址" class="layui-input">
                </div>
            </div>

            <div class="layui-form-item layui-form-text">
                <label class="layui-form-label required">Headers设置</label>
                <div class="layui-input-block">
                    <!--
                        Content-Type:application/json
                        token:token
                    -->
                    <textarea style="height: 150px" id="headers" name="headers" class="layui-textarea" placeholder="key:value,多个以回车分隔"></textarea>
                </div>
            </div>
            <div class="layui-form-item layui-form-text">
                <label class="layui-form-label required">body设置</label>
                <div class="layui-input-block">
                    <textarea style="height: 200px" id="body" name="body" class="layui-textarea"  placeholder="JSON字符串"></textarea>
                </div>
            </div>
            <div class="layui-form-item layui-form-text">
                <label class="layui-form-label required">Response</label>
                <div class="layui-input-block">
                    <textarea style="height: 270px" id="resp" name="resp" class="layui-textarea"></textarea>
                </div>
            </div>
            <div class="layui-form-item">
                <div class="layui-input-inline">
                    <button id="test" name="test" lay-submit=""  class="layui-btn layui-btn-normal" lay-filter="test" lay-filter="setting">测试</button>
                </div>
                <div class="layui-input-inline">
                    <button id="save" name="save" lay-submit=""  class="layui-btn layui-btn-normal" lay-filter="save" lay-filter="setting">保存</button>
                </div>
            </div>
            <input id="random_num"  type="hidden"  name="random_num" class="layui-input">
        </div>
    </div>
</div>
<script src="../lib/jquery-3.4.1/jquery-3.4.1.min.js" charset="utf-8"></script>
<script src="../lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script src="../js/common.js" charset="utf-8"></script>
<script src="../js/pages/http.js" charset="utf-8"></script>
<script>
    var random_num;
    var flag = true;
    var $;
    var form_data = {};
    layui.use(['form','jquery'], function () {
        var form = layui.form
            , layer = layui.layer;
            $ = layui.jquery;
        $(function () {
            document.getElementById('headers').innerHTML = "Content-Type:application/json";
            form_data.req_type='post';
            random_num = randomNum(0,999);
            $("#random_num").val(random_num);
            webSocketConnection();
            form.on('select(req)',function (data) {
                form_data.req_type = data.value;
            })
            //监听提交
            form.on('submit(test)', function(data){
                if(form_data.req_type=="get"){
                    test(JSON.stringify(data.field));
                    return false;
                }else if(!flag){
                    layer.msg("body 设置问题 无法测试！");
                    return false;
                }else{
                    test(JSON.stringify(data.field));
                }

                return false;
            });
            //监听提交
            form.on('submit(save)', function(data){
                if(form_data.req_type=="get"){
                    test(JSON.stringify(data.field));
                    return false;
                }else if(!flag){
                    layer.msg("body 设置问题 无法测试！");
                    return false;
                }else{
                    save(JSON.stringify(data.field));
                }
                return false;
            });
            $('#body').bind('input propertychange','textarea',function(e){
                isJSON(e.target.value);
            });
        })
    });
    var test= function (data) {
        $.ajax({
            type:'POST',	//请求的类型,GET、POST等
            url:window.reqPath("http/test"),	//向服务器请求的地址。
            contentType:'application/json',	//向服务器发送内容的类型，默认值是：application/x-www-form-urlencoded
            dataType:'JSON',	//预期服务器响应类型
            async:true,	//默认值是true,表示请求是异步的，false是同步请求，同步请求会阻碍浏览器的其他操作（不建议使用）
            timeout:'5000',	//设置本地的请求超时时间（单位是毫秒）
            data:data,
            success:function(result,status,XMLHttpRequest){		//请求成功是执行的函数,result：服务器返回的数据，    status：服务器返回的状态，

            },
            error:function(xhr,status,error){	//请求失败是执行的函数

            },
            complete:function(xhr,status){
                //不管请求失败还是请求成功，都执行的函数
            }
        })
    }
    var save= function (data) {
        $.ajax({
            type:'POST',	//请求的类型,GET、POST等
            url:window.reqPath("http/save"),	//向服务器请求的地址。
            contentType:'application/json',	//向服务器发送内容的类型，默认值是：application/x-www-form-urlencoded
            dataType:'JSON',	//预期服务器响应类型
            async:true,	//默认值是true,表示请求是异步的，false是同步请求，同步请求会阻碍浏览器的其他操作（不建议使用）
            timeout:'5000',	//设置本地的请求超时时间（单位是毫秒）
            data:data,
            success:function(result,status,XMLHttpRequest){		//请求成功是执行的函数,result：服务器返回的数据，    status：服务器返回的状态，
                layer.msg(result.msg);
            },
            error:function(xhr,status,error){	//请求失败是执行的函数

            },
            complete:function(xhr,status){
                //不管请求失败还是请求成功，都执行的函数
            }
        })
    }
    //生成随机数 避免打开多个页面 发生问题
    function randomNum(minNum,maxNum){
        switch(arguments.length){
            case 1:
                return parseInt(Math.random()*minNum+1,10);
                break;
            case 2:
                return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10);
                break;
            default:
                return 0;
                break;
        }
    }
    function isJSON(str) {
        if (typeof str == 'string') {
            try {
                var obj=JSON.parse(str);
                if(typeof obj == 'object' && obj ){
                    flag = true;
                    return true;
                }else{
                    layer.tips('不是json字符串', '#body');
                    flag = false;
                    return false;
                }
            } catch(e) {
                layer.tips('不是json字符串', '#body');
                flag = false;
                return false;
            }
        }
    }
</script>
</body>
</html>